package cn.siat.gene.service;

import com.baomidou.mybatisplus.extension.service.IService;
import cn.siat.common.core.web.domain.AjaxResult;
import cn.siat.gene.domain.Information;
import cn.siat.gene.domain.Programme;
import cn.siat.gene.domain.vo.ProgrammeVO;
import cn.siat.gene.domain.dto.ProgrammeQueryParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description: 方案信息
 * @Author: Administrator
 * @Date:   2022-10-22
 * @Version: V1.0
 */
public interface IProgrammeService extends IService<Programme> {

    /**
     * 方案信息-分页列表查询
     *
     * @author zhanggj@hearglobal.com
     * @date 2022.10.31 15:47
     * @version 0.0.1
     */
    List<ProgrammeVO> queryPageList(ProgrammeQueryParam queryParams);

    void deleteBatch(String ids);

    void cloneProgramme(Programme programme);

    String shareProgramme(Programme programme);

    void share(Programme programme);

    Map<String, String> disposeShareProgramme(String id, Integer informationState, String newProgrammeName);

    List<Information> getDisposeShareProgramme();


    /**
     * 项目中移除方案
     *
     * @param id 方案id
     * @return
     */
    int removeProgrammeInProjectById(String id);


    List<Map<String, String>> getAllUser();

    List<Programme> selectViewedProgrammes();

    Boolean checkName(String programmeName, String id);

    Map<String, String> createByTemplate(Programme programme);

    AjaxResult createBlank(Programme programme);

    List<ProgrammeVO> listNoProjectProgrammes(String projectId);

    AjaxResult updateProject(String[] ids, String projectId, String projectName);


    void toLab(Map<String, String> params);

    void editProgramme(Programme programme);

    List<Map<String, String>> selectProgrammeCreateStaffList();

    AjaxResult updateExamineState(Programme programme);

    boolean existById(@Param("programmeName") String programmeName);
}
